﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Persistente.Postagem
{
    public class PTagPostagem
    {
        private DB_SIMETRIA _db;
        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_SIMETRIA_SQL"].ConnectionString);
        public bool Salvar(int idTag, int idPostagem)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var tbTagPostagem = new tb_tag_postagem();
                tbTagPostagem.tag_id_tag = idTag;
                tbTagPostagem.postagem_id_postagem = idPostagem;

                _db.AddTotb_tag_postagem(tbTagPostagem);
                _db.SaveChanges();

                return true;

            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }

        }

        public bool Remover(int idTagPostagem)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbTagPostagem = _db.tb_tag_postagem.Where(q => q.id_tag_postagem == idTagPostagem).FirstOrDefault();
                if (obTbTagPostagem == null)
                {
                    return false;
                }
                else
                {
                    _db.tb_tag_postagem.DeleteObject(obTbTagPostagem);
                    _db.SaveChanges();
                    return true;
                }

            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        


        public tb_tag_postagem pegarTagPostagemPorId(int idTagPostagem)
        {
            try
            {
                _db = new DB_SIMETRIA();
                return _db.tb_tag_postagem.Where(q => q.id_tag_postagem == idTagPostagem).FirstOrDefault();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public int contarTagPostagem(int idTag, int idPostagem)
        {
            try
            {
                _db = new DB_SIMETRIA();
                return _db.tb_tag_postagem.Where(q => q.tag_id_tag == idTag && q.postagem_id_postagem == idPostagem).Count();
                
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public DataSet pegarTagsPostagensPorPostagem(int idPostagem)
        {

            var ds = new DataSet();

            string query = "SELECT ";
            query += "  tp.id_tag_postagem";
            query += ",  tp.postagem_id_postagem";
            query += ",  tp.tag_id_tag";
            query += " FROM tb_tag_postagem tp";
            query += " WHERE  tp.postagem_id_postagem in ("+idPostagem+")";

            

            var cmd = new SqlCommand(query, _conexao);

            cmd.Connection = _conexao;

            if (_conexao.State == ConnectionState.Closed)
            {
                _conexao.Open();
            }

            var dataAdapter = new SqlDataAdapter(cmd);
            dataAdapter.Fill(ds);

            _conexao.Close();

            return ds;
        }


    }
}
